package leetcode_字符串._06字符的统计;

import java.util.Arrays;

/**
 * 有效的字母异位词
 * 字母异位词 : 两个单词字母相同 , 但是字母顺序不同
 * 算法 :
 *   用之前学到的异位方法来做
 *   res = 0 , 使用 res 与两个单词做异或运算
 *   运算完后 , 若 res 还是 0 , 则返回 true
 *   以上算法错误 , s = "aa" , t = "bb"
 *
 *   算出它们的和是否相等 , 也不行 s = "ac" , t = "bb"
 *
 * 算法 :
 *   计数
 */
public class _242 {
    public static void main(String[] args) {
        String s = "nagaram";
        String t = "anagram";
        char[] a = s.toCharArray();
        char[] b = t.toCharArray();
        Arrays.sort(a);
    }

    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        int[] tem = new int[26];
        for (int i = 0; i < s.length(); i++) {
            ++tem[s.charAt(i) - 'a'];
        }
        for (int i = 0; i < t.length(); i++) {
            if (--tem[t.charAt(i) - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }

    public boolean isAnagram_sort(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        char[] a = s.toCharArray();
        char[] b = t.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);
        return Arrays.equals(a, b);
    }

}
